Solvers are executable code developed for providing solutions to problems represented as mathematical models. Some of the provided solutions may be optimized. Today, there are a number of different types of solvers for solving problems defined by different mathematical models. For example, a first type of solver is well-suited for solving problems defined by a linear model, a second type of solver is well-suited for solving problems defined by a quadratic model, a third type of solver is well-suited for solving problems defined by a mixed integer model, and a fifth type of solver is well-suited for solving constraint satisfaction problems defined by a model.
A solver may expect a model to be provided as input in a form of statements in a modeling language or a series of calls to a solver application program interface (API). Solvers are developed by a number of companies. A first solver developed by, for example, company “A” may expect a model to be provided as statements in a first modeling language, which may have been developed by company “A”, or by a series of calls to a first type of API, which also may have been developed by company “A”. A second solver developed by, for example, company “B” may expect a model to be provided as statements in a second modeling language, which may have been developed by company “B”, or buy a series of calls to a second type of API, which also may have been developed by company “B”. Thus, one may not be able to readily use multiple solvers developed by different companies.
Currently, many solvers will accept modeling language input in Mathematical Programming System (MPS) format. MPS is a file format for presenting linear programming and mixed integer programming problems. MPS is an old format, which is set up for punch cards, and may be somewhat cumbersome and time-consuming to use for defining models when compared to newer modeling languages.